Methods and systems for monitoring documents exchanged over email applications

ABSTRACT

Disclosed herein are methods and systems for monitoring and detecting changes in files attached to incoming emails. In one embodiment, if files are attached to an outgoing email, the change service uniquely tags each of the attached files and optionally stores local or remote copies of the tagged files. Additionally, in embodiments, the change service monitors and intercepts incoming emails. If files are attached to an incoming email, the change service identifies whether the files are tagged in a manner unique to the compare service. The change service then matches uniquely tagged files in the incoming email to corresponding files previously tagged by the change service. The change service then compares the two documents and generates reports that identify changes in the received document in relation to the transmitted document. Further, in embodiments, the change service provides visual indicators of the changes within the email application.

PRIORITY CLAIM

This application is a continuation of U.S. patent application Ser. No.13/206,765, filed Nov. 29, 2011, which claims the benefit of U.S.Provisional Application No. 61/417,853, filed Nov. 29, 2010, U.S.Provisional Application No. 61/417,869, filed Nov. 29, 2010, U.S.Provisional Application No. 61/417,858 filed Nov. 29, 2010 and U.S.Provisional Application No. 61/417,855 filed Nov. 29, 2010. All of whichare hereby incorporated by reference in their entireties.

Additionally, this application relates to using comparison techniquesdiscussed in the following patent applications, each of which isincorporated herein in its entirety: U.S. patent application Ser. No.10/023,010, filed Dec. 17, 2002, issued as U.S. Pat. No. 7,496,841; U.S.patent application Ser. No. 12/177,043, filed Jul. 21, 2008, issued asU.S. Pat. No. 8,286,171; U.S. patent Ser. No. 12/275,185, filed Nov. 20,2008, now issued as U.S. Pat. No. 8,406,456; and U.S. patent applicationSer. No. 12/844,818, filed Jul. 27, 2010, now issued as U.S. Pat. No.8,473,847.

FIELD OF INVENTION

The present invention generally relates to the field of digital documentreview. More particularly, the present invention relates to methods andsystems for monitoring documents exchanged over email applications.

BACKGROUND

Document collaboration is a way by which multiple document editors canmake edits to a central copy of a document. The edits made by eachcontributing author is collectively captured. In some instances, aprimary editor may then accept or reject edits or content contributed bythe other authors. There is a variety of document collaboration softwarein the market that enables the functionality described above. However,as indicated, such document collaboration software is geared towardmultiple authors working together. Often, a primary author has to bedesignated and contributing authors have to be identified.

DESCRIPTION OF THE FIGURES

The headings provided herein are for convenience only and do notnecessarily affect the scope or meaning of the claimed invention. In thedrawings, the same reference numbers and any acronyms identify elementsor acts with the same or similar structure or functionality for ease ofunderstanding and convenience. To easily identify the discussion of anyparticular element or act, the most significant digit or digits in areference number refer to the Figure number in which that element isfirst introduced (e.g., element 101 is first introduced and discussedwith respect to FIG. 1).

In a more day-to-day occurrence, users create documents (e.g., Word®documents, PowerPoint® slide decks, etc.) that they distribute to one ormore users for review. Often times, a recipient of the document may havecontributions to the documents in the form of one or more edits. Thereceiving user may then return an edited form of the document back tothe original user. Unless the original user installs documentcollaboration software, hassles with designating authors, and sendsdocuments through the document collaboration software, the user will notbe able to track changes made to the document. Such a process would betime consuming, expensive, and would also require the user to gocompletely out of his normal routine to get the process established. Foran average user who sends out dozens of documents a day and returnsquite a few back with edits, the document collaboration software is justnot an option.

In the normal scenario, when a user receives an edited version of adocument from another user (that the user originally sent to the otheruser), the user may or may not know whether the document was actuallyedited by the other user. Also, even if the document was edited, theuser may have no way of realizing what the changes were, and so wouldnot be able to accept or ignore (or at the very least, acknowledge) thechanges.

Overall, the examples herein of some prior or related systems and theirassociated limitations are intended to be illustrative and notexclusive. Other limitations of existing or prior systems will becomeapparent to those of skill in the art upon reading the followingDetailed Description.

SUMMARY OF THE DESCRIPTION

At least one embodiment of this invention pertains to a compare servicefor monitoring and detecting changes in files attached to an incomingemail. In one embodiment, the change service monitors emails that a userintends to transmit using an email application. If files are attached toan outgoing email, the change service uniquely tags each of the attachedfiles and optionally stores local or remote copies of the tagged files.Additionally, in embodiments, the change service monitors and interceptsincoming emails directed to the user. If files are attached to anincoming email, the change service identifies whether the files aretagged in a manner unique to the compare service. The change servicethen matches any such uniquely tagged files in the incoming email tocorresponding files previously tagged by the change service. Inembodiments, the change service compares the two documents and generatesreports that identify changes in the received document in relation tothe transmitted document.

Further, in embodiments, the change service provides visual indicatorsof the changes within the email application. For example, the changeservice may include a change indicator field within the emailapplication (in addition to, for example, the conventional fields suchas subject indicator, sender indicator, received time indicator, etc.)indicating that the received document includes at least one change. Inanother example, the change service may include a visual description ofthe amount of changes (e.g., in the form of a percentage difference incontents of the files) in the received file in relation to thetransmitted file.

Other advantages and features will become apparent from the followingdescription and claims. It should be understood that the description andspecific examples are intended for purposes of illustration only and notintended to limit the scope of the present disclosure.

BRIEF DESCRIPTION OF DRAWINGS

These and other objects, features and characteristics of the presentinvention will become more apparent to those skilled in the art from astudy of the following detailed description in conjunction with theappended claims and drawings, all of which form a part of thisspecification. In the drawings:

FIG. 1A and the following discussion provide a brief, generaldescription of a representative environment in which the invention canbe implemented;

FIG. 1B is a block diagram illustrating an exemplary architecture of acompare service;

FIG. 1C is a high-level block diagram showing an example of thearchitecture for a computer system;

FIGS. 2A-2C provide illustrations of how the change service isimplemented within an email application;

FIGS. 3A-3B are flow diagrams depicting process flows of the changeservice functionalities. The headings provided herein are forconvenience only and do not necessarily affect the scope or meaning ofthe claimed invention.

In the drawings, the same reference numbers and any acronyms identifyelements or acts with the same or similar structure or functionality forease of understanding and convenience. To easily identify the discussionof any particular element or act, the most significant digit or digitsin a reference number refer to the Figure number in which that elementis first introduced (e.g., element 204 is first introduced and discussedwith respect to FIG. 2).

DETAILED DESCRIPTION

Various examples of the invention will now be described. The followingdescription provides specific details for a thorough understanding andenabling description of these examples. One skilled in the relevant artwill understand, however, that the invention may be practiced withoutmany of these details. Likewise, one skilled in the relevant art willalso understand that the invention can include many other features notdescribed in detail herein. Additionally, some well-known structures orfunctions may not be shown or described in detail below, so as to avoidunnecessarily obscuring the relevant description. The terminology usedbelow is to be interpreted in its broadest reasonable manner, eventhough it is being used in conjunction with a detailed description ofcertain specific examples of the invention. Indeed, certain terms mayeven be emphasized below; however, any terminology intended to beinterpreted in any restricted manner will be overtly and specificallydefined as such in this Detailed Description section.

Various examples of the invention will now be described. The followingdescription provides specific details for a thorough understanding andenabling description of these examples. One skilled in the relevant artwill understand, however, that the invention may be practiced withoutmany of these details. Likewise, one skilled in the relevant art willalso understand that the invention can include many other obviousfeatures not described in detail herein. Additionally, some well-knownstructures or functions may not be shown or described in detail below,so as to avoid unnecessarily obscuring the relevant description.

The terminology used below is to be interpreted in its broadestreasonable manner, even though it is being used in conjunction with adetailed description of certain specific examples of the invention.Indeed, certain terms may even be emphasized below; however, anyterminology intended to be interpreted in any restricted manner will beovertly and specifically defined as such in this Detailed Descriptionsection.

FIG. 1A and the following discussion provide a brief, generaldescription of a representative environment in which the invention canbe implemented. Although not required, aspects of the invention may bedescribed below in the general context of computer-executableinstructions, such as routines executed by a general-purpose dataprocessing device (e.g., a server computer or a personal computer).Those skilled in the relevant art will appreciate that the invention canbe practiced with other communications, data processing, or computersystem configurations, including: wireless devices, Internet appliances,hand-held devices (including personal digital assistants (PDAs)),wearable computers, all manner of cellular or mobile phones,multi-processor systems, microprocessor-based or programmable consumerelectronics, set-top boxes, network PCs, mini-computers, mainframecomputers, and the like. Indeed, the terms “computer,” “server,” and thelike are used interchangeably herein, and may refer to any of the abovedevices and systems.

While aspects of the invention, such as certain functions, are describedas being performed exclusively on a single device, the invention canalso be practiced in distributed environments where functions or modulesare shared among disparate processing devices. The disparate processingdevices are linked through a communications network, such as a LocalArea Network (LAN), Wide Area Network (WAN), or the Internet. In adistributed computing environment, program modules may be located inboth local and remote memory storage devices.

Aspects of the invention may be stored or distributed on tangiblecomputer-readable media, including magnetically or optically readablecomputer discs, hard-wired or preprogrammed chips (e.g., EEPROMsemiconductor chips), nanotechnology memory, biological memory, or otherdata storage media. Alternatively, computer implemented instructions,data structures, screen displays, and other data related to theinvention may be distributed over the Internet or over other networks(including wireless networks), on a propagated signal on a propagationmedium (e.g., an electromagnetic wave(s), a sound wave, etc.) over aperiod of time. In some implementations, the data may be provided on anyanalog or digital network (packet switched, circuit switched, or otherscheme).

As shown in FIG. 1A, a user may use a personal computing device (e.g., amobile computing device 104, a personal computer 102, etc.) to executefunctionalities for the techniques described herein. The user may alsouse the personal computing device to communicate with a network. Theterm “mobile computing device,” as used herein, may be a laptop, anetbook, a personal digital assistant (PDA), a smart phone (e.g., aBlackberry®, an Iphone®, etc.), a portable media player (e.g., an IPodTouch®), or any other device having communication capability to connectto the network. In one example, the mobile computing device 104 connectsto the network using one or more cellular transceivers or base stationantennas (not shown in FIG. 1), access points, terminal adapters,routers or modems 106 (in IP-based telecommunications implementations),or combinations of the foregoing (in converged network embodiments).

In some instances, the network 110 is the Internet, allowing thepersonal computing device to access functionalities offered through, forexample, the compare server 120 or various web servers. In someinstances, the network is a local network maintained by a private entityor a wide area public network, or a combination of any of the abovetypes of networks. In some instances, especially where the mobilecomputing device 104 is used to access web content through the network110 (e.g., when a 3G or an LTE service of the phone 102 is used toconnect to the network 110), the network 110 may be any type ofcellular, IP-based or converged telecommunications network, includingbut not limited to Global System for Mobile Communications (GSM), TimeDivision Multiple Access (TDMA), Code Division Multiple Access (CDMA),Orthogonal Frequency Division Multiple Access (OFDM), General PacketRadio Service (GPRS), Enhanced Data GSM Environment (EDGE), AdvancedMobile Phone System (AMPS), Worldwide Interoperability for MicrowaveAccess (WiMAX), Universal Mobile Telecommunications System (UMTS),Evolution-Data Optimized (EVDO), Long Term Evolution (LTE), Ultra MobileBroadband (UMB), Voice over Internet Protocol (VoIP), Unlicensed MobileAccess (UMA), etc.

As shown in FIG. 1A, in some instances, the personal computing devicemay have a compare service 136 installed locally. In such instances, andas will be explained in detail below, the compare service 136 locallymonitors one or more email applications (e.g., Microsoft Outlook®) todetect attachments in incoming or outgoing emails. In some instances,the compare service 136 has an associated storage space in the personalcomputing device 102 or 104 to store local copies of documents and to beable to tag documents using unique tagging sequences. In some instances,while the compare service 136 may run on the personal computing device,it may use data storage capabilities of a remote server (e.g., compareserver 114) to perform the various functionalities described herein. Inembodiments, the compare service is installed as a protect agent ategress points (e.g., the email application or the email server) withlocal lightweight or complete database structures. Detailed explanationof such egress points, protect agents, and local lightweight/completedatabases is provided in detail in U.S. application Ser. No. 12/209,096,filed Sep. 11, 2008, entitled “METHODS AND SYSTEMS TO IMPLEMENTFINGERPRINT LOOKUPS ACROSS REMOTE AGENTS,” and further in U.S.application Ser. No. 12/209,082, filed Sep. 11, 2008, entitled “METHODSAND SYSTEMS FOR PROTECT AGENTS USING DISTRIBUTED LIGHTWEIGHTFINGERPRINTS,” which are both incorporated herein in their entireties.

In some instances, the compare service 136 is configured by logic to runremotely on a compare server 120. In one example, the compare service isrun akin to a web or internet service in conjunction with a web server122. As explained above, a user may use a personal computing device toconnect to the compare server 114 using the network (e.g., a localoffice network, the Internet, etc.). In such an embodiment, the compareserver 114 may connect to an email server associated with the personalcomputing devices 102, 104 to monitor incoming or outgoing emailapplications, and to perform other functions (such as, e.g., taggingfunctions, document compare functions, reporting functions, etc.)remotely on the compare server 114. In one example, the compare servicemay operate both locally at the site of the personal computing deviceand remotely in conjunction with, for example, an email server. Inembodiments, the web server 116 may function as the email serverassociated with email applications included in the personal computingdevices. In such examples, the remote service may directly communicatewith the email server to intercept and monitor incoming or outgoingemails from a user and perform corresponding tagging, comparing, andreporting functionalities. The local service may in turn operate inconjunction with the remote service to receive updates regarding changesin specific file attachments and perform operations to report thechanges to the user.

Other examples of installing the compare service 136 either locally atthe site of the personal computing device or as a remote functionality,as may be contemplated by a person of ordinary skill in the art, may besubstituted for the functionalities described herein.

In embodiments, the compare service 136 maybe customized by use of a“compare service” control panel within an email application used by auser on the personal computing device 102, 104. Such an emailapplication may include a POPS or other push type email applications(such as, for example, Microsoft Outlook®, etc.) or may be web basedemail applications (such as, for example, Yahoo® email, etc.). In eithercase, the user may be presented with a set of control options to enableor disable features relating to the compare service. In one example, theuser may be able to selectively enable or disable the compare service136 functionalities. In one example, the user may be able to enable thecompare service, but only for certain types of documents (e.g., only forword based documents, but not for image files or other document types,etc.). In one example, the user may be able to enable the compareservice, but customize the type of reporting indicators (e.g., reportonly that a change is present in a document returned to the user, orreport that a change is present and also report a percentage change inthe received document in relation to the sent document, etc.). In oneexample, the user may be able to customize the type of reportingdisplays (e.g., receive the returned document and, in addition, receivea redline document identifying changes in received document in redlineformat; receive the returned document, and in addition, receive theredline version as embedded text within the email, etc.). Additionalfunctionalities, as may be contemplated by a user of ordinary skill inthe art, may also be utilized herein. The following sections describethe various functionalities of the compare service 136 in greaterdetail.

FIG. 1B is a block diagram illustrating an exemplary architecture of acompare service 136. In the illustrated embodiment, the compare serviceincludes a plurality of functional modules, where each of the functionalmodules is configured by logic to perform a unique function of thecompare service. The various functional modules can be implemented byusing programmable circuitry programmed by software and/or firmware, orby using special-purpose hardwired circuitry, or by using a combinationof such embodiments. In some instances, the functional modules areimplemented as units in a processor of the deals server.

The functional modules include a receiving module 1302. In embodiments,the receiving module 1302 is configured by logic to operate, forexample, in tandem with an email server or directly with the emailapplication to monitor incoming and outgoing emails.

In the case of an outgoing email (i.e., an email a user intends totransmit to another user using the email application), the reportingmodule 1302 first determines whether the email includes one or moreattachments. If the receiving module 1302 detects such attachments, thereceiving module uniquely tags each of the attachments. Tagging isperformed by means of the tagging module 1304 of the compare service136. In some instances, the reporting module stores (either locally orremotely in the compare server 114) metadata information relating to thedocument and the document tagging for use in further operations. In someinstances, the reporting module 1302 may further establish an additionalcopy of the files (i.e., the attachments) and store it in conjunctionwith the tagging metadata information for use in subsequent comparisonoperations. By maintaining this additional local copy, the compareservice 136 is able to compare a received (changed) version of thedocument with the original document the user sent out, even if the usermakes interim changes to the user's copy of the documents. Additionally,in embodiments, maintaining these additional copies in the remotecompare server 114 enables remote operation of the compare service 136.

In the case of an incoming email (i.e., an email intended for the userthat is transmitted by another person), the reporting module 1302intercepts the email and performs one or more checks. For example, thereporting module first verifies whether the incoming email includes oneor more attachments. If the reporting module identifies suchattachments, the reporting module 1302 then determines whether the files(i.e., the attachments) are tagged in a manner consistent with thetagging performed by the tagging module 1304. If such tagging isidentified, the reporting module 1302 then submits the received files(i.e., the attachments) to the matching module 1306.

The matching module 1306 compares the tagging information (or other suchmetadata) associated with the received files with the tagginginformation of the files the compare service 136 previously tagged (andin some instances, the files for which the compare service 136 madeadditional copies for subsequent comparison operations). If the matchingmodule 1306 identifies such matching files, the matching module submitsthe received files and their “matched” counterparts to the comparemodule 1308 for comparison operations. The compare module 1308 comparesthe files to identify changes to the files.

The compare module 1308 may utilize any comparison mechanism, as may becontemplated by a person of ordinary skill in the art, for comparing thereceived files. As previously indicated, the files may be of anyformat-type that can be perused and compared by the compare service 136.For example, the files may be textual documents created usingword-processing software (e.g., MS Word® documents, Acrobat® documents,etc.), slide decks or presentation files, image files, audio files,video files, etc. In embodiments, the compare module 1308 may compareone or more of the textual information, the multimedia information, theformatting information, the image information, etc. of the two filesthat are compared.

Additionally, the compare module 1308 may also generate comparisonreports for use by the reporting module. In one example, the comparemodule 1308 may generate a new redline document corresponding to thefile contained in the incoming email. The redline document would providea direct comparison, in redline format, of the file in the incomingemail and a corresponding (counterpart) file that was previouslytransmitted by the user. In one example, the compare module may computea percentage of difference between the received file and the transmittedfile. In one example, the compare module 1308 generates a detailedanalysis of the type of changes, in terms of the type of changes. In anillustrate example, detailed report may include the following details:“20% textual changes, 60% image changes, 20% formatting changes.”

The reporting module 1310 performs various reporting functionalities ofthe compare service 136. In embodiments, the reporting module interactswith the email application to provide a visual indicator (in relation tothe received email) to indicate that an attachment includes changes (asidentified by, for example, the compare module 1308). In embodiments,the reporting module 1310 may display information generated by thecompare module 1308 (such as, e.g., difference values indicatingpercentage difference between received and transmitted files) in one ormore formats based on prior control settings established by the user.Exemplary illustrations of such displays are discussed below withreference to FIGS. 2A-2C.

FIG. 1C is a high-level block diagram showing an example of thearchitecture for a computer system 170 that can be utilized to implementa personal computing device (e.g., 102 from FIG. 1A) for running acomparison service, a compare server 114, or a web server (e.g., 120from FIG. 1A), etc. In FIG. 1C, the computer system 170 includes one ormore processors 1705 and memory 1710 connected via an interconnect 1725.The interconnect 1725 is an abstraction that represents any one or moreseparate physical buses, point to point connections, or both connectedby appropriate bridges, adapters, or controllers. The interconnect 1725,therefore, may include, for example, a system bus, a PeripheralComponent Interconnect (PCI) bus, a HyperTransport or industry standardarchitecture (ISA) bus, a small computer system interface (SCSI) bus, auniversal serial bus (USB), IIC (I2C) bus, or an Institute of Electricaland Electronics Engineers (IEEE) standard 694 bus, sometimes referred toas “Firewire”.

The processor(s) 1705 may include central processing units (CPUs) tocontrol the overall operation of, for example, the host computer. Incertain embodiments, the processor(s) 1705 accomplish this by executingsoftware or firmware stored in memory 1710. The processor(s) 1705 maybe, or may include, one or more programmable general-purpose orspecial-purpose microprocessors, digital signal processors (DSPs),programmable controllers, application specific integrated circuits(ASICs), programmable logic devices (PLDs), or the like, or acombination of such devices.

The memory 1710 is or includes the main memory of the computer system170. The memory 180 represents any form of random access memory (RAM),read-only memory (ROM), flash memory (as discussed above), or the like,or a combination of such devices. In use, the memory 180 may contain,among other things, a set of machine instructions which, when executedby processor 1705, causes the processor 1705 to perform operations toimplement embodiments of the present invention.

Also connected to the processor(s) 1705 through the interconnect 1725 isa network adapter 1715. The network adapter 1715 provides the computersystem 170 with the ability to communicate with remote devices, such asthe storage clients, and/or other storage servers, and may be, forexample, an Ethernet adapter or Fiber Channel adapter.

FIG. 2A is an illustration of an email application 210 depicting thefunctionalities of the compare service 136. An example of an “inbox”view of email application 210 is provided. As may be readily perceivedby a person of ordinary skill in the art, the “inbox” view (or anyfolder view within the email application) typically includes fields suchas a “From” indicator 216, a “Subject” indicator 218, a “Receiveddate/time” indicator 220, an “Attachment” indicator 210, etc. Theattachment indicator 210 typically indicates whether a received emailincludes, as an attachment, at least one file. In connection with thecompare service discussed herein, a new field of the compare service, a“compare” indicator 212, is introduced to the inbox view. This compareindicator 212 represents whether at least one file attached to an emailhas changed in relation to a previously transmitted file (as determinedby the compare service 136).

In the illustration of FIG. 2A, items 252, 254, and 256 are indicatorsof received emails. Email indicator 252 indicates that at least one fileis attached to the email (as indicated in the attachment indicator field210). Furthermore, in this example, the compare service 136 hasdetermined that at least one of the files has “changed” in relation to aversion of the file previously transmitted by the user. Accordingly, thecompare indicator field 212 of email indicator 252 is enabled. In thisexample, a visual indicator in the form of an icon is displayed in thecompare indicator field 212 to provide an alert to the user that thereis a change in at least one of the files attached to email 252.

Email indicator 254 also has at least one file attached to it (asindicated by the attachment indicator field 210). However, in thisillustration, the file attached to email 254 is either a new file ordoes not include any changes in relation to files previously transmittedby the user. Accordingly, the compare indicator field 212 is empty (orotherwise disabled) in email indicator 254. Similarly, as illustrated inFIG. 2A, the compare indicator field 212 is enabled for email 256.

Additionally, in embodiments, the received emails may include redline(i.e., readily perceivable change) information. In one example, asillustrated in the preview pane (located below the incoming emaillisting), an email that has a “change indicator field” 212 turned onincludes the original file attachment 262 (as sent by a sender), and acorresponding redline document (e.g., file1_redline 264). As previouslydescribed, this redline document would represent changes to the receivedfile 262 in redline format. In another example, as illustrated in FIG.2B, the received email may also include the redline changes as anembedded portion of the email. As explained above, the user may changecontrol settings to indicate the types of visual indicators and changesummaries the user would like to receive. In the example of FIG. 2B, theuser has opted to receive both a redline file 262 and an embeddedversion of the redline changes in the body 274 of the email. Having thisoption (i.e., the option of embedded redline changes in the body of theemail) would allow a user to easily view and comprehend the changes,even on a smartphone, without having to download or open the fileattachments.

FIG. 2C illustrates an embodiment where the reporting module 1310provides visual indicators of “difference values.” As previouslydescribed, in some embodiments, the compare service 136 computesdifference values that are indicative of the amount of changes in thereceived file relative to the transmitted file. This difference valuemay be reported directly through the email application in severalmanners. In a first example, as illustrated in FIG. 2C, a percentagevalue of the changes may be displayed as hovering text over the emailindicator 252. In a second example, a bar chart or any other type ofpictorial representation may be displayed in the form of a hoveringpop-up. In another example, a background color of the change indicator212 corresponding to email indicator 252 may be changed in relation tothe amount of change. For example, in an illustrative embodiment, thebackground color of change indicator 212 may be red if there is morethan 75% change in the received file, orange if there is between 50% and75% change in the received file, green if there is between 25% and 50%change in the received file, etc.

FIG. 3A is a flow diagram illustrating an operation of the receivingmodule 1302 of the change service 136. In embodiments, as indicated inblock 302, the receiving module 1302 receives a first email that a userwishes to transmit to another person. At block 304, the receiving module1302 verifies whether the first email has any files attached to it. Ifthe receiving module 1302 detects the presence of at least one file, theprocess branches to block 306, where the receiving module uniquely tagseach file attached to the first email. Otherwise, if no file is attachedto the first email, the process proceeds to the return step from block304. Subsequent to tagging the files at block 304, the process proceedsto block 308, where the receiving module optionally stores a copy of thetagged files for later usage in the matching/comparison operations. Itis emphasized that the above process and all subsequent processdescriptions merely illustrate exemplary embodiments of thefunctionalities of the compare service 136 and that variations of theprocess steps (in terms of varied sequences or omission of the indicatedsteps) are equally viable alternatives.

FIG. 3B is a flow diagram illustrating a process for monitoring emailsreceived by an email application. As depicted, at block 352, the compareservice 136 receives or intercepts an email that is intended to bedelivered to the user. At block 354, the compare service 136 determineswhether the email has one or more file attachments. If files areidentified, the process shifts to block 356, where the compare service356 further determines whether the files have tags that are unique tothe compare service. If the process determines that the tags are indeedunique to the compare service, the process shifts to block 358, wherethe compare service 136 identifies a file (that was previouslytransmitted in an email sent by the user) that matches the receivedfile's tag. Subsequently, at block 360, the process compares contents ofthe received file with contents of the file identified at block 358.Block 362 determines whether any changes are detected. If changes aredetected in the contents of the files, the process shifts to block 362,where the compare service 136 performs a suitable reporting action(e.g., provide a visual indicator in relation to the email indicator,provide an indicator of a difference value representing percentageamount of difference in contents of the files, etc.).

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense (i.e., to say, in thesense of “including, but not limited to”), as opposed to an exclusive orexhaustive sense. As used herein, the terms “connected,” “coupled,” orany variant thereof means any connection or coupling, either direct orindirect, between two or more elements. Such a coupling or connectionbetween the elements can be physical, logical, or a combination thereof.Additionally, the words “herein,” “above,” “below,” and words of similarimport, when used in this application, refer to this application as awhole and not to any particular portions of this application. Where thecontext permits, words in the above Detailed Description using thesingular or plural number may also include the plural or singular numberrespectively. The word “or,” in reference to a list of two or moreitems, covers all of the following interpretations of the word: any ofthe items in the list, all of the items in the list, and any combinationof the items in the list.

The above Detailed Description of examples of the invention is notintended to be exhaustive or to limit the invention to the precise formdisclosed above. While specific examples for the invention are describedabove for illustrative purposes, various equivalent modifications arepossible within the scope of the invention, as those skilled in therelevant art will recognize. While processes or blocks are presented ina given order in this application, alternative implementations mayperform routines having steps performed in a different order, or employsystems having blocks in a different order. Some processes or blocks maybe deleted, moved, added, subdivided, combined, and/or modified toprovide alternative or sub-combinations. Also, while processes or blocksare at times shown as being performed in series, these processes orblocks may instead be performed or implemented in parallel, or may beperformed at different times. Further any specific numbers noted hereinare only examples. It is understood that alternative implementations mayemploy differing values or ranges.

The various illustrations and teachings provided herein can also beapplied to systems other than the system described above. The elementsand acts of the various examples described above can be combined toprovide further implementations of the invention.

Any patents and applications and other references noted above, includingany that may be listed in accompanying filing papers, are incorporatedherein by reference. Aspects of the invention can be modified, ifnecessary, to employ the systems, functions, and concepts included insuch references to provide further implementations of the invention.

These and other changes can be made to the invention in light of theabove Detailed Description. While the above description describescertain examples of the invention, and describes the best modecontemplated, no matter how detailed the above appears in text, theinvention can be practiced in many ways. Details of the system may varyconsiderably in its specific implementation, while still beingencompassed by the invention disclosed herein. As noted above,particular terminology used when describing certain features or aspectsof the invention should not be taken to imply that the terminology isbeing redefined herein to be restricted to any specific characteristics,features, or aspects of the invention with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the invention to the specific examplesdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe invention encompasses not only the disclosed examples, but also allequivalent ways of practicing or implementing the invention under theclaims.

While certain aspects of the invention are presented below in certainclaim forms, the applicant contemplates the various aspects of theinvention in any number of claim forms. For example, while only oneaspect of the invention is recited as a means-plus-function claim under35 U.S.C. § 112, sixth paragraph, other aspects may likewise be embodiedas a means-plus-function claim, or in other forms, such as beingembodied in a computer-readable medium. (Any claims intended to betreated under 35 U.S.C. § 112, ¶ 6 will begin with the words “meansfor.”) Accordingly, the applicant reserves the right to add additionalclaims after filing the application to pursue such additional claimforms for other aspects of the invention.

Operating Environment:

The system is typically comprised of a central server that is connectedby a data network to a user's computer. The central server may becomprised of one or more computers connected to one or more mass storagedevices. The precise architecture of the central server does not limitthe claimed invention. Further, the user's computer may be a laptop ordesktop type of personal computer. It can also be a cell phone, smartphone or other handheld device, including a tablet. The precise formfactor of the user's computer does not limit the claimed invention.Examples of well-known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldcomputers, laptop or mobile computer or communications devices such ascell phones, smart phones, and PDA's, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputers, mainframe computers,distributed computing environments that include any of the above systemsor devices, and the like. Indeed, the terms “computer,” “server,” andthe like may be used interchangeably herein, and may refer to any of theabove devices and systems.

The user environment may be housed in the central server or operativelyconnected to it. In one embodiment, the user's computer is omitted, andinstead an equivalent computing functionality is provided that works ona server. In this case, a user would log into the server from anothercomputer and access the system through a user environment, and therebyaccess the functionality that would in other embodiments, operate on theuser's computer. Further, the user may receive from and transmit data tothe central server by means of the Internet, whereby the user accessesan account using an Internet web-browser and browser displays aninteractive web page operatively connected to the central server. Theserver transmits and receives data in response to data and commandstransmitted from the browser in response to the customer's actuation ofthe browser user interface. Some steps of the invention may be performedon the user's computer and interim results transmitted to a server.These interim results may be processed at the server and final resultspassed back to the user.

The Internet is a computer network that permits customers operating apersonal computer to interact with computer servers located remotely andto view content that is delivered from the servers to the personalcomputer as data files over the network. In one kind of protocol, theservers present webpages that are rendered on the customer's personalcomputer using a local program known as a browser. The browser receivesone or more data files from the server that are displayed on thecustomer's personal computer screen. The browser seeks those data filesfrom a specific address, which is represented by an alphanumeric stringcalled a Universal Resource Locator (URL). However, the webpage maycontain components that are downloaded from a variety of URL's or IPaddresses. A website is a collection of related URL's, typically allsharing the same root address or under the control of some entity. Inone embodiment different regions of the simulated space displayed by thebrowser have different URL's. That is, the webpage encoding thesimulated space can be a unitary data structure, but different URL'sreference different locations in the data structure. The user computercan operate a program that receives from a remote server a data filethat is passed to a program that interprets the data in the data fileand commands the display device to present particular text, images,video, audio and other objects. In some embodiments, the remote serverdelivers a data file that is comprised of computer code that the browserprogram interprets, for example, scripts. The program can detect therelative location of the cursor when the mouse button is actuated, andinterpret a command to be executed based on location on the indicatedrelative location on the display when the button was pressed. The datafile may be an HTML document, the program a web-browser program and thecommand a hyper-link that causes the browser to request a new HTMLdocument from another remote data network address location. The HTML canalso have references that result in other code modules being called upand executed, for example, Flash or other native code.

The invention may also be entirely executed on one or more servers. Aserver may be a computer comprised of a central processing unit with amass storage device and a network connection. In addition a server caninclude multiple of such computers connected together with a datanetwork or other data transfer connection, or, multiple computers on anetwork with network accessed storage, in a manner that provides suchfunctionality as a group. Practitioners of ordinary skill will recognizethat functions that are accomplished on one server may be partitionedand accomplished on multiple servers that are operatively connected by acomputer network by means of appropriate inter process communication. Inaddition, the access of the website can be by means of an Internetbrowser accessing a secure or public page or by means of a clientprogram running on a local computer that is connected over a computernetwork to the server. A data message and data upload or download can bedelivered over the Internet using typical protocols, including TCP/IP,HTTP, TCP, UDP, SMTP, RPC, FTP or other kinds of data communicationprotocols that permit processes running on two respective remotecomputers to exchange information by means of digital networkcommunication. As a result a data message can be one or more datapackets transmitted from or received by a computer containing adestination network address, a destination process or applicationidentifier, and data values that can be parsed at the destinationcomputer located at the destination network address by the destinationapplication in order that the relevant data values are extracted andused by the destination application. The precise architecture of thecentral server does not limit the claimed invention. In addition, thedata network may operate with several levels, such that the user'scomputer is connected through a fire wall to one server, which routescommunications to another server that executes the disclosed methods.

The invention may also be practiced in distributed computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed computingenvironment, program modules may be located in both local and remotecomputer storage media including memory storage devices. Practitionersof ordinary skill will recognize that the invention may be executed onone or more computer processors that are linked using a data network,including, for example, the Internet. In another embodiment, differentsteps of the process can be executed by one or more computers andstorage devices geographically separated by connected by a data networkin a manner so that they operate together to execute the process steps.In one embodiment, a user's computer can run an application that causesthe user's computer to transmit a stream of one or more data packetsacross a data network to a second computer, referred to here as aserver. The server, in turn, may be connected to one or more mass datastorage devices where the database is stored. The server can execute aprogram that receives the transmitted packet and interpret thetransmitted data packets in order to extract database query information.The server can then execute the remaining steps of the invention bymeans of accessing the mass storage devices to derive the desired resultof the query. Alternatively, the server can transmit the queryinformation to another computer that is connected to the mass storagedevices, and that computer can execute the invention to derive thedesired result. The result can then be transmitted back to the user'scomputer by means of another stream of one or more data packetsappropriately addressed to the user's computer. In one embodiment, arelational database may be housed in one or more operatively connectedservers operatively connected to computer memory, for example, diskdrives. In yet another embodiment, the initialization of the relationaldatabase may be prepared on the set of servers and the interaction withthe user's computer occur at a different place in the overall process.

The method described herein can be executed on a computer system,generally comprised of a central processing unit (CPU) that isoperatively connected to a memory device, data input and outputcircuitry (IO) and computer data network communication circuitry.Computer code executed by the CPU can take data received by the datacommunication circuitry and store it in the memory device. In addition,the CPU can take data from the I/O circuitry and store it in the memorydevice. Further, the CPU can take data from a memory device and outputit through the IO circuitry or the data communication circuitry. Thedata stored in memory may be further recalled from the memory device,further processed or modified by the CPU in the manner described hereinand restored in the same memory device or a different memory deviceoperatively connected to the CPU including by means of the data networkcircuitry. The memory device can be any kind of data storage circuit ormagnetic storage or optical device, including a hard disk, optical diskor solid state memory. The IO devices can include a display screen,loudspeakers, microphone and a movable mouse that indicate to thecomputer the relative location of a cursor position on the display andone or more buttons that can be actuated to indicate a command.

The computer can display on the display screen operatively connected tothe I/O circuitry the appearance of a user interface. Various shapes,text and other graphical forms are displayed on the screen as a resultof the computer generating data that causes the pixels comprising thedisplay screen to take on various colors and shades or brightness. Theuser interface may also display a graphical object referred to in theart as a cursor. The object's location on the display indicates to theuser a selection of another object on the screen. The cursor may bemoved by the user by means of another device connected by I/O circuitryto the computer. This device detects certain physical motions of theuser, for example, the position of the hand on a flat surface or theposition of a finger on a flat surface. Such devices may be referred toin the art as a mouse or a track pad. In some embodiments, the displayscreen itself can act as a trackpad by sensing the presence and positionof one or more fingers on the surface of the display screen. When thecursor is located over a graphical object that appears to be a button orswitch, the user can actuate the button or switch by engaging a physicalswitch on the mouse or trackpad or computer device or tapping thetrackpad or touch sensitive display. When the computer detects that thephysical switch has been engaged (or that the tapping of the track pador touch sensitive screen has occurred), it takes the apparent locationof the cursor (or in the case of a touch sensitive screen, the detectedposition of the finger) on the screen and executes the processassociated with that location. As an example, not intended to limit thebreadth of the disclosed invention, a graphical object that appears tobe a two dimensional box with the word “enter” within it may bedisplayed on the screen. If the computer detects that the switch hasbeen engaged while the cursor location (or finger location for a touchsensitive screen) was within the boundaries of a graphical object, forexample, the displayed box, the computer will execute the processassociated with the “enter” command. In this way, graphical objects onthe screen create a user interface that permits the user to control theprocesses operating on the computer.

In some instances, especially where the user computer is a mobilecomputing device used to access data through the network the network maybe any type of cellular, IP-based or converged telecommunicationsnetwork, including but not limited to Global System for MobileCommunications (GSM), Time Division Multiple Access (TDMA), CodeDivision Multiple Access (CDMA), Orthogonal Frequency Division MultipleAccess (OFDM), General Packet Radio Service (GPRS), Enhanced Data GSMEnvironment (EDGE), Advanced Mobile Phone System (AMPS), WorldwideInteroperability for Microwave Access (WiMAX), Universal MobileTelecommunications System (UMTS), Evolution-Data Optimized (EVDO), LongTerm Evolution (LTE), Ultra Mobile Broadband (UMB), Voice over InternetProtocol (VoIP), Unlicensed Mobile Access (UMA), any form of 802.11.xxor Bluetooth.

Computer program logic implementing all or part of the functionalitypreviously described herein may be embodied in various forms, including,but in no way limited to, a source code form, a computer executableform, and various intermediate forms (e.g., forms generated by anassembler, compiler, linker, or locator.) Source code may include aseries of computer program instructions implemented in any of variousprogramming languages (e.g., an object code, an assembly language, or ahigh-level language such as C, C++, C#, Action Script, PHP, EcmaScript,JavaScript, JAVA, or HTML) for use with various operating systems oroperating environments. The source code may define and use various datastructures and communication messages. The source code may be in acomputer executable form (e.g., via an interpreter), or the source codemay be converted (e.g., via a translator, assembler, or compiler) into acomputer executable form.

Generally, program modules include routines, programs, objects,components, that perform particular tasks or implement particularabstract data types and when running, may generate in computer memory orstore on disk, various data structures. A data structure may berepresented in the disclosure as a manner of organizing data, but isimplemented by storing data values in computer memory in an organizedway. Data structures may be comprised of nodes, each of which may becomprised of one or more computer memory locations into which is storedone or more corresponding data values that are related to an item beingrepresented by the node in the data structure. The collection of nodesmay be organized in various ways, including by having one node in thedata structure being comprised of a memory location wherein is storedthe memory address value or other reference, or pointer, to another nodein the same data structure. By means of the pointers, the relationshipby and among the nodes in the data structure may be organized in avariety of topologies or forms, including, without limitation, lists,linked lists, trees and more generally, graphs. The relationship betweennodes may be denoted in the specification by a line or arrow from adesignated item or node to another designated item or node. A datastructure may be stored on a mass storage device in the form of datarecords comprising a database, or as a flat, parsable file. In otherembodiment, the data structure is one or more relational tables storedon the mass storage device and organized as a relational database.

The computer program and data may be fixed in any form (e.g., sourcecode form, computer executable form, or an intermediate form) eitherpermanently or transitorily in a tangible storage medium, such as asemiconductor memory device (e.g., a RAM, ROM, PROM, EEPROM, orFlash-Programmable RAM), a magnetic memory device (e.g., a diskette orfixed hard disk), an optical memory device (e.g., a CD-ROM or DVD), a PCcard (e.g., PCMCIA card, SD Card), or other memory device, for example aUSB key. The computer program and data may be fixed in any form in asignal that is transmittable to a computer using any of variouscommunication technologies, including, but in no way limited to, analogtechnologies, digital technologies, optical technologies, wirelesstechnologies, networking technologies, and internetworking technologies.The computer program and data may be distributed in any form as aremovable storage medium with accompanying printed or electronicdocumentation (e.g., a disk in the form of shrink wrapped softwareproduct or a magnetic tape), preloaded with a computer system (e.g., onsystem ROM or fixed disk), or distributed from a server, website orelectronic bulletin board or other the communication system (e.g., theInternet or World Wide Web.) It is appreciated that any of the softwarecomponents of the present invention may, if desired, be implemented inROM (read-only memory) form. The software components may, generally, beimplemented in hardware, if desired, using conventional techniques.

It should be noted that the flow diagrams are used herein to demonstratevarious aspects of the invention, and should not be construed to limitthe present invention to any particular logic flow or logicimplementation. The described logic may be partitioned into differentlogic blocks (e.g., programs, modules, functions, or subroutines)without changing the overall results or otherwise departing from thetrue scope of the invention. Oftentimes, logic elements may be added,modified, omitted, performed in a different order, or implemented usingdifferent logic constructs (e.g., logic gates, looping primitives,conditional logic, and other logic constructs) without changing theoverall results or otherwise departing from the true scope of theinvention. Where the disclosure refers to matching or comparisons ofnumbers, values, or their calculation, these may be implemented byprogram logic by storing the data values in computer memory and theprogram logic fetching the stored data values in order to process themin the CPU in accordance with the specified logical process so as toexecute the matching, comparison or calculation and storing the resultback into computer memory or otherwise branching into another part ofthe program logic in dependence on such logical process result. Thelocations of the stored data or values may be organized in the form of adata structure.

The described embodiments of the invention are intended to be exemplaryand numerous variations and modifications will be apparent to thoseskilled in the art. All such variations and modifications are intendedto be within the scope of the present invention as defined in theappended claims. Although the present invention has been described andillustrated in detail, it is to be clearly understood that the same isby way of illustration and example only, and is not to be taken by wayof limitation. It is appreciated that various features of the inventionwhich are, for clarity, described in the context of separate embodimentsmay also be provided in combination in a single embodiment. Conversely,various features of the invention which are, for brevity, described inthe context of a single embodiment may also be provided separately or inany suitable combination. It is appreciated that the particularembodiment described in the Appendices is intended only to provide anextremely detailed disclosure of the present invention and is notintended to be limiting.

The foregoing description discloses only exemplary embodiments of theinvention. Modifications of the above disclosed apparatus and methodswhich fall within the scope of the invention will be readily apparent tothose of ordinary skill in the art. Accordingly, while the presentinvention has been disclosed in connection with exemplary embodimentsthereof, it should be understood that other embodiments may fall withinthe spirit and scope of the invention as defined by the followingclaims.

1. A method executed by a computer system for monitoring changes in adocument exchanged over email, the system comprised of a data storagemodule further comprised of a first document file, the methodcomprising: prior to transmitting an outgoing email, identifying thepresence of a first document file as an attachment to the outgoingemail; upon identifying the presence of the first document fileattachment, attaching a first tag data uniquely identifying the firstdocument file prior to the transmitting of the outgoing email;transmitting from the computer system an outgoing email messagecomprised of the first document file attached to the outgoing emailmessage and the first tag data uniquely identifying the first documentfile; storing the first tag in a database record that references thefirst document, said database record accessible by the transmittingcomputer system; receiving at the computer system an incoming emailmessage comprised of a second document file attached to the incomingemail message and a second tag data uniquely identifying the seconddocument file; executing a query on the database in order to select thefirst document file by determining using computer logic that the secondtag data and the first tag data identify two versions of the samedocument; extracting text data from the first document file and thesecond document file and using the extracted text data to compare thefirst document file and the second document file in order to identify atleast one changes made to contents of the first document file inrelation to the second document file; and using the results of thecompare step to compute a difference value between contents of the firstfile and the second file. 2-25. (canceled)